﻿using System;
using System.Collections.Generic;
using Pay.TO;

namespace Pay.DTO {
	/// <summary>
	/// 快捷支付请求报文
	/// </summary>
	public class quick_pay_model : head_req {
		public quick_pay_model() {
			binds = new List<bind_merchant_item>();
		}
		/// <summary>
		/// 分润分配集合，可空
		/// </summary>
		public List<bind_merchant_item> binds { get; set; }
		/// <summary>
		/// 订单号
		/// </summary>
		public string order_no { get; set; }
		/// <summary>
		/// 交易金额:单位：分
		/// </summary>
		public string tran_amount { get; set; }
		/// <summary>
		/// 付款方名称
		/// </summary>
		public string account_name { get; set; }
		/// <summary>
		/// 付款方行卡号
		/// </summary>
		public string account_no { get; set; }
		/// <summary>
		/// 身份证号:第一次上送时必输；如果快捷支付协议号不为空，则此数据项可以为空并失效。
		/// </summary>
		public string id_card { get; set; }
		/// <summary>
		/// 手机号码:第一次上送时必输；如果快捷支付协议号不为空，则此数据项可以为空并失效。
		/// </summary>
		public string mobile { get; set; }

		#region hf需要
		/// <summary>
		/// 卡类型,借记：DC；贷记：CC
		/// </summary>
		public string card_type { get; set; }
		/// <summary>
		/// 如果发起过快捷支付，可以使用之前的返回的快捷支付协议号
		/// </summary>
		public string protocol_no { get; set; }
		/// <summary>
		/// 失效日期:第一次上送时必输；如果快捷支付协议号不为空，则此数据项可以为空并失效。
		/// </summary>
		public string vaild { get; set; }
		/// <summary>
		/// CVV2码:第一次上送时必输；如果快捷支付协议号不为空，则此数据项可以为空并失效。
		/// </summary>
		public string cvv2 { get; set; }
		#endregion
		/*以下非必须*/
		/// <summary>
		/// 开户银行编号
		/// </summary>
		public string bank_code { get; set; }
		/// <summary>
		/// 开户银行名称
		/// </summary>
		public string bank_name { get; set; }
		/// <summary>
		/// 前端通知页面url,成功跳转
		/// </summary>
		public string front_notify { get; set; }
		/// <summary>
		/// 结算TO/T1
		/// </summary>
		public string settle_type { get; set; }

		/*以下为必须*/
		/// <summary>
		/// 支付后服务器回调该地址
		/// </summary>
		public string notify { get; set; }
		/// <summary>
		/// 通道
		/// </summary>
		public PayChannel pay_channel { get; set; }
		/// <summary>
		/// 费率
		/// </summary>
		public decimal fee { get; set; }
		/// <summary>
		/// 费率金额，pay_amount*fee向上取整,分为单位
		/// </summary>
		public decimal pay_fee_amount { get; set; }
		/// <summary>
		/// 结算费:以分为单位
		/// </summary>
		public int settle_fee { get; set; }

		/// <summary>
		/// 类型：收款1，升级2，订单3
		/// </summary>
		public int type { get; set; }
		/// <summary>
		/// 支付方式：默认UNIONPAY
		/// </summary>
		public string pay_code { get { return "UNIONPAY"; } }
		/// <summary>
		/// 支付类型：默认Quick
		/// </summary>
		public PayType pay_type { get { return PayType.Quick; } }
		/// <summary>
		/// 地理位置
		/// </summary>
		public string location { get; set; }
	}

	/// <summary>
	/// 快捷支付响应报文
	/// </summary>
	public class quick_pay_result : ApiResultMessage {
		/// <summary>
		/// 订单号
		/// </summary>
		public string order_no { get; set; }
		/// <summary>
		/// 快捷支付协议号:商户第一次发起快捷支付，成功后，返回协议号,请求失败返回是空值
		/// </summary>
		public string protocol_no { get; set; }
		/// <summary>
		/// 支付流水号
		/// </summary>
		public string transaction_no { get; set; }
		/// <summary>
		/// 支付时间：yyyy-mm-dd hh:mm:ss
		/// </summary>
		public DateTime pay_time { get; set; }
		/// <summary>
		/// 1成功，2失败，3支付中
		/// </summary>
		public int status { get; set; }
		/// <summary>
		/// HF快捷接口签约URL，如果在建权时返回有值，需要把页面用此URL跳转,提交些内容后返回
		/// </summary>
		public string request_url { get; set; }
	}

	/// <summary>
	/// 快捷发短信
	/// </summary>
	public class quick_sendsms_model : head_req {
		/// <summary>
		/// 订单号
		/// </summary>
		public string order_no { get; set; }
		/// <summary>
		/// 支付通道
		/// </summary>
		public PayChannel pay_channel { get; set; }
	}

	/// <summary>
	/// 快捷确认
	/// </summary>
	public class quick_sms_model : head_req {
		/// <summary>
		/// 验证码
		/// </summary>
		public string sms_code { get; set; }
		/// <summary>
		/// 订单号
		/// </summary>
		public string order_no { get; set; }
		/// <summary>
		/// 支付通道
		/// </summary>
		public PayChannel pay_channel { get; set; }
	}
}
